package com.etime.shycourse.services.coupons.interfaces;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.etime.shycourse.dto.CouponTypesDto;
import com.etime.shycourse.pojo.Coupon;

import java.util.Date;
import java.util.List;

/**
 *
 * @author wb
 * @since 2022-03-15
 */
public interface CouponServices {
    /**
     * 后台
     * <p>
     * 创建优惠券
     *
     * @param coupon
     * @return Integer
     * 成功返回1 失败返回0
     */
    Integer insertCoupon(Coupon coupon, String token);

    /**
     * 查询所有的优惠劵
     *
     * @param coupon   条件   可不传
     * @param pageNum, 第几页       可不传
     * @param pageSize 一页多少数据  可不传
     * @return Page<CouponTypesDto>
     */
    Page<CouponTypesDto> selectCouponPage(Coupon coupon, Long pageNum, Long pageSize);


    /**
     * 根据优惠劵id进行修改
     *
     * @param coupon
     * @return int
     */
    Integer updateCouponById(Coupon coupon, String token);

    /**
     * 根据优惠劵id进行 发布、关闭
     *
     * @param coupon
     * @return int
     */
    Integer updateCouponByIds(Coupon coupon);


    /**
     * 根据优惠劵id进行 添加优惠劵数量
     *
     * @param coupon
     * @return int
     */
    Integer updateCouponAddNumberById(Coupon coupon);

    /**
     * 按 ID 选择优惠券
     *
     * @param CouponID
     * @return Coupon
     */
    Coupon selectCouponById(Integer CouponID);

    /**
     * 查询所有的优惠劵 用活动管理的优惠劵展示
     * 条件：
     * 1、Couponstate = 2 创建发布状态
     * 2、优惠券的发放数量<总数量 或者总数量=0
     * 3、优惠劵类型 1、3、2（优惠券结束使用时间>活动结束时间）
     */
    List<Coupon> selectCouponList(Date activeend);
}
